package main

import "fmt"

//创建一个Run接口
type Run interface {
	run()
}

type Runner struct {
	name string
}

func (r Runner) run() {
	fmt.Println(r.name, "，开始跑步。。。慢跑")
}

type Pig struct {
	name string
}

func (p Pig) run() {
	fmt.Println(p.name, "，觉着屁股跑。。")
}

//创建一个test函数，参数为接口类型，就可以传入任何实现了这个功能的结构体来测试
func testRun(r Run) {
	r.run()
}
func main() {
	//要使用多态，必须先声明一个接口类型的变量，才能使用
	var r1 Run
	r1 = Runner{"跑步者"}
	r1.run()
	//然后用这个接口类型的变量就可以分别实现各自的功能
	r1 = Pig{"佩奇"}
	r1.run()

	//testRun函数传入结构体对象就行了
	testRun(Pig{"二师兄"})
}
